#ifndef __LINK_LIST_H__
#define __LINK_LIST_H__

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 链表节点结构体
typedef struct _Node{
	int data;			// 数据域 以int为例 如果有多个数据项
						// 可以单独封装结构体 也可以直接在此处罗列
    // 注意 结构体中可以包含自身类型的指针 但是不能包含自身类型的变量
    // 且只能使用原名定义指针 不能使用别名node_t定义指针 因为此时还不认识别名呢
	struct _Node *next;	// 指针域
}node_t;

int create_node(node_t **p, int num);
int insert_list_by_head(node_t *phead, int num);
int print_list(node_t *phead);
int insert_list_by_tail(node_t *phead, int num);
int insert_list_by_pos(node_t *phead, int pos, int num);
int delete_list_by_head(node_t *phead);
int delete_list_by_tail(node_t *phead);
int delete_list_by_pos(node_t *phead, int pos);
int modify_list_by_pos(node_t *phead, int pos, int new_num);
int search_list_by_pos(node_t *phead, int pos, int *buff);
int clean_list(node_t *phead);
int destroy_list(node_t **p);
int hebing_list(node_t *phead1, node_t **phead2);
int sort_list(node_t *phead);
int overtrun_list(node_t *phead);
int tichong_list(node_t *phead);

#endif